package usecase;

import java.util.Arrays;
import java.util.Random;

/*
 *3. 编程题 实现双色球抽奖游戏中奖号码的生成，中奖号码由 6 个红球号码和 1 个蓝球号码组成。 其中红球号码要求随机生成 6 个 1~33 之间不重复的随机号码。 其中蓝球号码要求随机生成 1 个 1~16 之间的随机号码。
 * */
public class ExaminationQuestionThree {
    public static void main(String[] args) {
        //初始化33个红球号码
        int[] redBallArray = new int[33];
        for (int i = 1; i <= 33; i++) {
            redBallArray[i - 1] = i;
        }
        //初始化16个蓝球号码
        int[] blueBallArray = new int[16];
        for (int i = 1; i <= 16; i++) {
            blueBallArray[i - 1] = i;
        }
        //生成存储号码的数组
        int[] numberArray = new int[7];
        //循环7个数
        Random random = new Random();
        for (int i = 1; i <= 7; i++) {
            if (i < 7) {
                //根据当前红球库中目前有的球数生成一个随机数
                int redBallIndex = random.nextInt(redBallArray.length);
                //取这个随机数对应的球
                int redBallNumber=redBallArray[redBallIndex];
                //将球的号码赋值于存储号码的数组
                numberArray[i-1]=redBallNumber;
                redBallArray=delAnyPosition(redBallArray,redBallIndex);
            }else{
                //生成一个蓝球中的随机一个球的下标
                int blueBallIndex = random.nextInt(blueBallArray.length);
                //取对应的蓝球号码
                int blueBallNumber=blueBallArray[blueBallIndex];
                //将球的号码赋值于存储号码的数组
                numberArray[i-1]=blueBallNumber;
            }
        }
        //打印输出最后的双色球号码数组
        System.out.println(Arrays.toString(numberArray));
    }
    /*
    * 删除数组指定位置元素
    * */
    public static int[] delAnyPosition(int[] arr,int position){
        int[] res = new int[arr.length - 1];
        for(int i = 0;i<res.length;i++){
            if(i < position){
                res[i] = arr[i];
            }else{
                res[i] = arr[i + 1];
            }
        }
        return res;
    }
}
